#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
	char id[20];    
	char name[50]; 
	float score;    
} Student;
void addStudent();    
void showStudents();  
void menu();         
int main() {
	int choice;
	while (1) {
		menu();
		scanf("%d", &choice);
		switch (choice) {
		case 1:
			addStudent();
			break;
		case 2:
			showStudents();
			break;
		case 3:
			printf("欢迎您的再次使用！\n");
			return 0;
		default:
			printf("wrong，请重新选择！\n");
		}
	}
	return 0;
}
void menu() {
	printf("\n===== 学生信息管理系统 =====\n");
	printf("1. 添加学生信息\n");
	printf("2. 查看所有学生信息\n");
	printf("3. 退出系统\n");
	printf("请输入选择（1-3）：");
}
void addStudent() {
	Student s;
	printf("请输入学号：");
	scanf("%s", s.id);
	printf("请输入姓名：");
	scanf("%s", s.name);
	printf("请输入成绩：");
	scanf("%f", &s.score);

	FILE *fp = fopen("students.dat", "ab");
	if (fp == NULL) {
		printf("wrong！\n");
		return;
	}
	fwrite(&s, sizeof(Student), 1, fp);  
	fclose(fp);
	printf("添加成功！\n");
}
void showStudents() {
	Student s;
	FILE *fp = fopen("students.dat", "rb");
	if (fp == NULL) {
		printf("文件不存在或打开失败！\n");
		return;
	}
	printf("\n===== 学生信息列表 =====\n");
	printf("学号\t姓名\t成绩\n");
	while (fread(&s, sizeof(Student), 1, fp) == 1) {
		printf("%s\t%s\t%.2f\n", s.id, s.name, s.score);
	}
	fclose(fp);
}
